1. Field of the Invention
Embodiments of this invention relate to a method and storage medium for the virtualization of device self-description information in a computing system through modification of the information during its transit from a functional device to a program (specifically, an operating system) to which the device is virtualized.
2. Description of the Related Art
Embodiments of this invention solve problems arising from a program having an incomplete view of a functional device, in particular a virtualized device, or a device on a data path that imparts certain characteristics of interest to the program. Device self-description data comes from a functional device and describes that device, but such description cannot take account of characteristics that are changed through virtualization of the device by a hypervisor that presents a virtual image of the device to the program.
In addition, there may be characteristics of the data path that would be useful for the program to know, but which cannot be included in the self-description data by the device itself.
A virtual device is a device that appears to the program as a separate entity, but may be a portion of a shared real (physical or logical) device or be totally simulated by a hypervisor.
A hypervisor, sometimes referred to as a virtualization manager, is a software program or machine firmware that instantiates virtual machines (i.e., virtual images of a real machine), allowing multiple operating systems, which can include different operating systems or multiple instances of the same operating system, to share a single hardware computer system that includes one or more processors, or engines. A hypervisor also supports resource partitioning and dynamic resource movement across multiple operating system environments.
A hypervisor must be designed for a particular processor architecture, such as IBM's z/Architecture, IBM's POWER architecture, or Intel's x86 architecture. Each operating system running under the control of a hypervisor appears to have processor, memory, and other resources all to itself. However, the hypervisor actually controls the real processor and its resources, allocating them to each operating system on demand and/or by policy.
Because an operating system is often used to run a particular application or set of applications in a dedicated hardware server, the use of a hypervisor can make it possible to run multiple operating systems (and their applications) in a single such server, reducing overall hardware costs. Production and test systems can run at the same time on the same hardware.
The IBM z/Architecture provides a specific command by which an operating system (hereinafter called the program) may request self-description information from a connected input/output (I/O) device. The command is called Read Configuration Data (RCD), and the selected device returns architecturally-defined data in a configuration record. Each element comprising the logical device is described by (i) a node-element descriptor (NED), (ii) an emulation NED (when the device emulates another type of device), (iii) one or more specific node-element qualifiers (NEQ), (iv) a token NED that relates one device to another when they share a hardware subsystem, and (v) a general NEQ. This architecture is described in the IBM publication entitled ESA/390 Common I/O-Device Commands and Self Description, order number SA22-7204-02.
Existing virtualization systems may provide an operating system with self-description information that gives an incomplete view of some or all of the I/O devices. Therefore, it is desired to provide a method of intercepting self-description information that is read by the program in a virtual machine from a functional device, and altering that information before delivering the information to the virtual machine.